

if(0 < f2 && f12 < 0){ f12 -= 2*f2*f12; }

f4 -= f7;
if(1 < f4){
	f4 -= 2;
}else if(f4 < -1){
	f4 += 2;
}




if(f21 > 0){
	f7 = (1-f21)*f7 + f21*f5;
}else{
	f5 = (1-(-f21))*f5 + (-f21)*f7;
}




if(0 < f2){
	f16 *= 1 - f2;
	f16 += 0 < f18 ? f2*f14 : f2*f20;
}else{ 
	if(0 < f18){
		f14 *= 1 - (-f2);
		f14 += (-f2)*f16;
	}else{
		f20 *= 1 - (-f2);
		f20 += (-f2)*f16;
	}
}


if(0 < f18 && f9 < 0){ f9 -= 2*f18*f9; }

f1 -= f4;
if(1 < f1){
	f1 -= 2;
}else if(f1 < -1){
	f1 += 2;
}


f10 = Math.max(f5,f0);

f13 = Math.min(f8,f19);

f15 -= f4;
if(1 < f15){
	f15 -= 2;
}else if(f15 < -1){
	f15 += 2;
}




if(0 < f2){
	f16 *= 1 - f2;
	f16 += 0 < f18 ? f2*f3 : f2*f20;
}else{ 
	if(0 < f18){
		f3 *= 1 - (-f2);
		f3 += (-f2)*f16;
	}else{
		f20 *= 1 - (-f2);
		f20 += (-f2)*f16;
	}
}



if(0 < f4){
	f13 *= 1 - f4;
	f13 += 0 < f14 ? f4*f2 : f4*f19;
}else{ 
	if(0 < f14){
		f2 *= 1 - (-f4);
		f2 += (-f4)*f13;
	}else{
		f19 *= 1 - (-f4);
		f19 += (-f4)*f13;
	}
}


if(0 < f21 && f20 < 0){ f20 -= 2*f21*f20; }








{
	double radius = Math.sqrt(f9*f9 + f6*f6);
	double angle = Math.asin(f6/Math.max(.000000001,radius));
	if(f9 < 0){ angle += Math.PI; }
	double speed = 1 / Math.max(.000000001, Math.abs(f15));
	angle += f1*speed;
	f9 = Math.max( -1., Math.min(radius*Math.cos(angle), 1.) );
	f6 = Math.max( -1., Math.min(radius*Math.sin(angle), 1.) );
}








{
	double radius = Math.sqrt(f2*f2 + f12*f12);
	double angle = Math.asin(f12/Math.max(.000000001,radius));
	if(f2 < 0){ angle += Math.PI; }
	double speed = 1 / Math.max(.000000001, Math.abs(f0));
	angle += f4*speed;
	f2 = Math.max( -1., Math.min(radius*Math.cos(angle), 1.) );
	f12 = Math.max( -1., Math.min(radius*Math.sin(angle), 1.) );
}



if(0 < f14){
	f0 *= 1 - f14;
	f0 += 0 < f10 ? f14*f7 : f14*f3;
}else{ 
	if(0 < f10){
		f7 *= 1 - (-f14);
		f7 += (-f14)*f0;
	}else{
		f3 *= 1 - (-f14);
		f3 += (-f14)*f0;
	}
}

f20 = Math.max(f12,f0);




if(0 < f17){ 
	if(f8 < 0){ f8 -= 2*f17*f8; }
}else{ 
	if(0 < f8){ f8 -= 2*f17*f8; }
}
f19 *= f22;


if(0 < f0 && f11 < 0){ f11 -= 2*f0*f11; }

f9 = Math.max(f18,f4);


if(0 < f14 && f1 < 0){ f1 -= 2*f14*f1; }

f0 -= f7;
if(1 < f0){
	f0 -= 2;
}else if(f0 < -1){
	f0 += 2;
}





if(0 < f17){ 
	if(f1 < 0){ f1 -= 2*f17*f1; }
}else{ 
	if(0 < f1){ f1 -= 2*f17*f1; }
}




if(0 < f17){ 
	if(f11 < 0){ f11 -= 2*f17*f11; }
}else{ 
	if(0 < f11){ f11 -= 2*f17*f11; }
}








{
	double radius = Math.sqrt(f12*f12 + f6*f6);
	double angle = Math.asin(f6/Math.max(.000000001,radius));
	if(f12 < 0){ angle += Math.PI; }
	double speed = 1 / Math.max(.000000001, Math.abs(f15));
	angle += f1*speed;
	f12 = Math.max( -1., Math.min(radius*Math.cos(angle), 1.) );
	f6 = Math.max( -1., Math.min(radius*Math.sin(angle), 1.) );
}

f16 = Math.max(f18,f4);




if(0 < f17){ 
	if(f21 < 0){ f21 -= 2*f17*f21; }
}else{ 
	if(0 < f21){ f21 -= 2*f17*f21; }
}


if(0 < f14 && f18 < 0){ f18 -= 2*f14*f18; }

{
	double swap2Vars = f17;
	f17 = f22;
	f22 = swap2Vars;
}
f17 *= f22;